package assignment.ton.def;

import java.io.Serializable;
import java.util.ArrayList;

import assignment.ton.gui.interfaces.EditingInterface;

public class Method implements Serializable,EditingInterface{
	private static final long serialVersionUID = 8991757827097987301L;
	private String name;
	private String type;
	private ArrayList<Parameter> parameterList;
	private ArrayList<String> extraCode;
	public Method(String n, String t){
		parameterList = new ArrayList<Parameter>();
		name = n;
		type = t;
	}
	public boolean hasParameter(String n){
		if(parameterList.size()<1){ return false; }
		for(Parameter p: parameterList){
			if(p.getName().equals(n)){
				return true;
			}
		}
		return false;
	}
	public boolean addParameter(Parameter p){
		if(hasParameter(p.getName())){ return false; }
		parameterList.add(p);
		return true;
	}
	public String[] getParameterList(){
		int i = 0;
		String[] listData;
		if(parameterList.size()>0){
			listData = new String[parameterList.size()];
			for(Parameter p: parameterList){
				listData[i] = p.toString();
				i++;
			}
		}else{
			listData = new String[1];
			listData[0]=null;
		}
		return listData;
	}
	public ArrayList<Parameter> getParameterArrayList(){
		return parameterList;
	}
	public boolean removeParameter(String n){
		if(hasParameter(n)==false){ return false; }
		for(Parameter p: parameterList){
			if(p.getName().equals(n)){
				parameterList.remove(p);
				return true;
			}
		}
		return false;
	}
	public String getName(){
		return name;
	}
	public String getType(){
		return type;
	}
	public void setName(String n){
		name = n;
	}
	public void setType(String t){
		type = t;
	}
	public String toString(){
		return name+": "+type;
	}
	public void setExtraCode(ArrayList<String> ar){
		extraCode = ar;
	}
	public ArrayList<String> getExtraCode(){
		return extraCode;
	}
}
